package com.cms.recursoshumanos.json.object;

import com.cms.recursoshumanos.cache.UserInfoCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.json.me.JSONArray;
import com.cms.recursoshumanos.json.me.JSONException;
import com.cms.recursoshumanos.json.me.JSONObject;
import com.cms.recursoshumanos.object.Familiar;
import com.cms.recursoshumanos.object.Parentesco;
import com.cms.recursoshumanos.object.Persona;
import com.cms.recursoshumanos.object.list.ListaFamiliar;
import com.cms.recursoshumanos.utilities.Tool;

public class JsonObjectGetFamiliar 
{
	
	public static JsonObjectGetFamiliar _instance = null;
	public static JsonObjectGetFamiliar getInstance() {
		if(_instance == null)
			_instance = new JsonObjectGetFamiliar();
		
		return _instance;
	}
	public JsonObjectGetFamiliar()
	{
	}
	public String Result;
	private static final String 
			GETFAMILIAR = "GETFAMILIAR",
			GETFAMILIAR_STATUS = "STATUS",
			GETFAMILIAR_DATA = "DATA",

			GETFAMILIAR_DATOS_FAMILIARES = "DATOS_FAMILIAR",
			GETFAMILIAR_FAMILIAR_ID = "familiar_id",
			GETFAMILIAR_FAMILIAR_CI = "ci_familiar",
			GETFAMILIAR_FAMILIAR_NOMBRE_1 = "nombre_familiar_1",
			GETFAMILIAR_FAMILIAR_NOMBRE_2 = "nombre_familiar_2",
			GETFAMILIAR_FAMILIAR_APELLIDO_1 = "apellido_familiar_1",
			GETFAMILIAR_FAMILIAR_APELLIDO_2 = "apellido_familiar_2",
			GETFAMILIAR_FAMILIAR_FOTO = "foto_familiar",
			GETFAMILIAR_FAMILIAR_FECHA_NAC = "fecha_nacimiento",
			GETFAMILIAR_FAMILIAR_SEXO = "sexo_familiar",
			GETFAMILIAR_FAMILIAR_ASEGURADO = "asegurado",
			GETFAMILIAR_PARENTESCO_ID = "parentesco_id",
			GETFAMILIAR_PARENTESCO_NOMBRE = "nombre_parentesco",
			GETFAMILIAR_PARENTESCO_DESCRIPCION = "descripcion_parentesco";
	

	
	
	
	public void fromJSON (String jsonString) 
	{
		if (jsonString != null)
		{
			if (!jsonString.equals(""))
			{
				try
				{
					JSONObject jsonObject = new JSONObject(jsonString);	
					JSONObject getListaFamiliar = jsonObject.getJSONArray(GETFAMILIAR).getJSONObject(0);
					String status = getListaFamiliar.getString(GETFAMILIAR_STATUS);
					
					Result = status;
					
					if (status.equals(Constant.CODE_OK))
					{
		
						ListaFamiliar listadoFamiliar = new ListaFamiliar();
						JSONArray data = getListaFamiliar.getJSONArray(GETFAMILIAR_DATA);
						JSONObject objeto_data = data.getJSONObject(0);
						JSONArray datos_familiares = objeto_data.getJSONArray(GETFAMILIAR_DATOS_FAMILIARES);
						
						for (int i = 0; i < datos_familiares.length(); i++ )
						{
							JSONObject json_familiar = datos_familiares.getJSONObject(i);
							listadoFamiliar.addFamiliar(this.getElFamiliar(json_familiar));
		
						}
						UserInfoCache.getInstance().setFechaCache(1);
						UserInfoCache.getInstance().setListaFamiliar(listadoFamiliar);
					}
				
				} 
				catch (JSONException ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
				catch (Exception ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
			}
			else
			{
				Result = Constant.CODE_NOT_SERVER_RESPONSE;
			}
		}
		else
		{
			Result = Constant.CODE_NOT_SERVER_RESPONSE;
		}
	}
	public Familiar getElFamiliar(JSONObject json_familiar)
	{
		try 
		{
			Familiar elFamiliar = new Familiar(Integer.parseInt(json_familiar.getString(GETFAMILIAR_FAMILIAR_ID)),
												new Persona(0,json_familiar.getString(GETFAMILIAR_FAMILIAR_CI), 
												json_familiar.getString(GETFAMILIAR_FAMILIAR_NOMBRE_1),
												(json_familiar.getString(GETFAMILIAR_FAMILIAR_NOMBRE_2).equals("null") ?
														null:
														json_familiar.getString(GETFAMILIAR_FAMILIAR_NOMBRE_2)),
												json_familiar.getString(GETFAMILIAR_FAMILIAR_APELLIDO_1),
												json_familiar.getString(GETFAMILIAR_FAMILIAR_APELLIDO_2),
												null, 
												null, 
												null, 
												Constant.URL_FAMILIAR+json_familiar.getString(GETFAMILIAR_FAMILIAR_ID)+"/"+
														json_familiar.getString(GETFAMILIAR_FAMILIAR_FOTO),
												Tool.getInstance().parseStringToDate(json_familiar.getString(GETFAMILIAR_FAMILIAR_FECHA_NAC)), 
												json_familiar.getString(GETFAMILIAR_FAMILIAR_SEXO),
												null), 
												//(json_familiar.getString(GETFAMILIAR_FAMILIAR_ASEGURADO) == "null" ? false : true),
												json_familiar.getBoolean(GETFAMILIAR_FAMILIAR_ASEGURADO),
												new Parentesco(Integer.parseInt(json_familiar.getString(GETFAMILIAR_PARENTESCO_ID)), 
														 		json_familiar.getString(GETFAMILIAR_PARENTESCO_NOMBRE), 
														 		(json_familiar.getString(GETFAMILIAR_PARENTESCO_DESCRIPCION).equals("null") ?
														 				null :
														 					json_familiar.getString(GETFAMILIAR_PARENTESCO_DESCRIPCION))));
			return elFamiliar;
		} 
		catch (NumberFormatException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} 
		catch (JSONException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		
	}
	public String getResult()
	{
		return Result;
	}
	
}


